home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
04
/
1
/
DISK0416.ZIP
/
ROFF4.H
< prev
next >
Wrap
C/C++ Source or Header
|
1985-08-10
|
12KB
|
281 lines
/********************************************************/
/* */
/* ROFF4, Version 1.60 */
/* */
/*(C) 1983,4 by Ernest E. Bergmann */
/* Physics, Building #16 */
/* Lehigh Univerisity */
/* Bethlehem, Pa. 18015 */
/* */
/* Permission is hereby granted for all commercial and */
/* non-commercial reproduction and distribution of this */
/* material provided this notice is included. */
/* */
/********************************************************/
/*FEB 19, 1984*/
/*Jan 15, 1984*/
#include "stdio.h"
#include "ctype.h"
/* The following is require because putchar is a macro in Lattice C */
/* However, this program use its putchar. Therefore undefine of */
/* putchar is required. */
#undef putchar
/*June 27, 1983 eliminate directed input*/
/* Uncomment the line below if you want to use the option -b
on command line. */
/* #define DEBUGON 1 */
#define MAXLINE 255
#define TRUE 1
#define FALSE 0
#define ERROR (-1)
#define OK 0
char _doflag; /* flag if directed I/O being used */
char **_nullpos; /*???*/
FILE *_dobuf,*IOBUF; /* /O buffer used for direction */
char sav_out_file[20]; /*??? added to work with dioinit
and dioflush() ???*/
int debug;
int PAGESTOP;
int JUSTIFY;
int FFEED;
int FIRSTPAGE,LASTPAGE;/*for selectively printing output*/
int SUPPRESS;/*if true,no output is passed by putchar()*/
#define STDERR stderr
/* send error messages to console while in DIO */
#define STKSIZ 3
#define DEBUG ( debug != 0 )
#define HUGE 135 /* generally large number */
#define LSZ 255 /* line buffer size*/
#define COMMAND '.' /* all commands starts with this */
#define CONSOLE -5 /* one of output options */
#define PRINTER -4 /* another */
/* #define FILE -3 * another * */
#define UNKNOWN -1 /* returned if doesn't recg. command */
#define NO_VAL -32760 /* returned when no argument w/commad */
#define WE_HAVE_A_WORD 1 /* returned by getwrd func. */
#define NO 0
#define YES 1
#define UNDERLINE '\137'
#define CR 0x0D
#define BACKSPACE '\b'
#define NUMSIGN '#' /* for title strings */
#define NEWLINE '\n'
#define TAB '\t'
#define BLANK ' '
#define FORMF 0x0C /* formfeed for printer */
#define SQUOTE 0x27 /* single quote */
#define DQUOTE 0x22 /* double quote */
#define TRSIZ 2000 /*size of TRTBL*/
#define TRANSLATE 2 /* May 23, 1983*/
#define BLACK 1
#define WHITE 0
#define CONTROL -1
#define SENTINEL -2
#define HTAB -3
#define OTHERS -4
#define XCHAR '-'
#define UCHAR '_'
#define FI 1 /* fill lines */
#define TI 2 /* temporary indent */
#define BP 3 /* begin page */
#define BR 4 /* causes break */
#define CE 5 /* center line(s) */
#define IN 7 /* left indent */
#define LS 8 /* line spacing */
#define NF 9 /* no fill */
#define PL 10 /* set page length */
#define RM 11 /* set right margin */
#define SP 12 /* add blank line(s) */
#define ST 13 /* stop(pause) at page start?*/
#define FO 14 /* footer title */
#define HE 15 /* header title */
#define M1 16 /* top margin */
#define M2 17 /* second top margin */
#define M3 18 /* first bottom margin */
#define M4 19 /* bottom-most margin */
#define IG 20 /* "ignore";comments,Nov 6,82*/
#define NE 21 /* "need";Nov 7,82*/
#define FF 22 /* "formfeed";Nov 10*/
#define SC 23 /* "space character";Nov13*/
#define OW 24 /* "output width";Nov 13*/
#define TS 25 /* "tabsize";Nov 13*/
#define EH 26 /* "even headers";Nov 14*/
#define OH 27 /* "odd headers"*/
#define EF 28 /* "even footers"*/
#define OF 29 /* "odd footers"*/
#define AB 30 /* "abort";Nov 15*/
#define DB 31 /* "debug"*/
#define TC 32 /* "translation flag char"*/
#define TR 33 /* "def translation string"*/
#define CF 34 /* Dec 4:control flag char*/
#define IC 35 /* insert character */
#define OU 36 /* output */
#define JU 37 /* right justify?*/
#define NJ 38 /* don't right justify*/
#define WH 39 /* whole line spacing code*/
#define FR 40 /* fractional spacing,code*/
#define DS 41 /*define string*/
#define DM 42 /*define macro*/
#define EM 43 /*end macro*/
#define RG 44 /*register variable*/
#define DI 45 /*diversion*/
#define ED 46 /*end diversion*/
#define SO 47 /*"source", include*/
#define PC 48 /*printer control definition*/
#define SA 49 /*"say" inline msg to console*/
#define BJ 50 /*break with rightjustification
of current line*/
int FILL; /* set to YES or NO */
int _FILL[STKSIZ]; /*convert global value to a stack*/
int LSVAL; /* line spacing value -> default will be 1 */
int _LSVAL[STKSIZ];
int TIVAL; /* temporary indent -> default 0 */
int INVAL; /* left indent -> default 0 */
int _INVAL[STKSIZ+3]; /* larger stack size for indent 5th Mar,85 KKP */
int RMVAL; /* right margin -> default PAGEWIDTH */
int _RMVAL[STKSIZ];
int CEVAL; /* set equal to number of lines to be centered */
int TCVAL; /*translation flag char*/
int _TCVAL[STKSIZ];
/* default is 0 */
int SPVAL; /* blank lines to be spaced down */
int CURPAG; /* current output page number; init = 0 */
int NEWPAG; /* next output page number; init = 1 */
int VLINENO; /* virtual (intended) line advances on page,
see vadv()*/
int FVLINENO; /* + line fraction */
int PLINENO; /* printer's actual line advances on page,
see padv()*/
int FPLINENO; /* + line fraction */
int PLVAL; /* page length in lines */
int _PLVAL[STKSIZ];
int M1VAL; /* margin before& including header in lines*/
int _M1VAL[STKSIZ];
int M2VAL; /* margin after header in lines*/
int _M2VAL[STKSIZ];
int M3VAL; /* margin after last text line in lines*/
int _M3VAL[STKSIZ];
int M4VAL; /* bottom margin, including footer in lines*/
int _M4VAL[STKSIZ];
int BOTTOM; /* end of text area in lines;start of M3+M4 */
int SCVAL; /* space character*/
int _SCVAL[STKSIZ];
int OWVAL; /* output device width*/
int _OWVAL[STKSIZ];
int TABSIZ; /* spacing of tabstops*/
int _TABSIZ[STKSIZ];
int SENTENCE; /* Nov 20*/
int CFVAL; /*Dec 4:control flag character value*/
int _CFVAL[STKSIZ];
int ICVAL; /*insert character*/
int _ICVAL[STKSIZ];
char LINE[ LSZ ]; /*input line buffer, Nov 26*/
char EHEAD[ LSZ ],*EH2,*EH3; /* even header title */
char OHEAD[ LSZ ],*OH2,*OH3; /* odd header title */
char EFOOT[ LSZ ],*EF2,*EF3; /* even footer title */
char OFOOT[ LSZ ],*OF2,*OF3; /* even footer title */
/* defaults for global parameters */
#define FI_DEF 1
#define LS_DEF 1
#define IN_DEF 10
#define RM_DEF 70
#define TI_DEF 0
#define CE_DEF 1
#define UL_DEF -1
#define M1_DEF 2
#define M2_DEF 2
#define M3_DEF 2
#define M4_DEF 2
#define PL_DEF 66
#define FF_DEF YES /* .ff defaults to "on" */
#define FF_INI NO /* initial setting*/
#define SC_INI BLANK
#define OW_INI 80 /*initial output width*/
#define TS_DEF 8 /*standard tabsize*/
#define TC_DEF '~' /*translation flag default*/
#define CF_DEF '^' /*Dec 4*/
#define IC_DEF '\\'
#define CW_DEF 12 /* 12/120" */
#define JU_INI YES /*right justification*/
#define REGDEF 0 /*default for register var.*/
/*when .rg has no numeric arg*/
int DIR; /* for "spreading" of lines */
int OUTWRDS; /* no. words in OUTBUF; init = 0 */
char OUTBUF[ LSZ ]; /*lines to be filled collected here */
int OUTW; /*current display width of OUTBUF*/
int OUTPOS; /* =strlen(OUTBUF) */
int WTOP,LTOP,OUTTOP; /*zero|negative;levels of subscripts*/
int WBOT,LBOT,OUTBOT; /*zero|positive;levels of subscripts*/
int OLDLN; /*position of previous main line*/
int OLDBOT; /*OUTBOT for previous line;reset
each page*/
int FRQ,FRVAL; /* fractional line?, what fraction size*/
char *FRSTRING; /* ^ to code for fractional spacing*/
char *WHSTRING; /* ^ to code for whole line spacing*/
char *CPTR[128-' ']; /*pointer table for print control*/
char *TPTR[128-' ']; /*pointer table for translation strings
for char; initialize to null */
char TRTBL[TRSIZ]; /*holds translation strings*/
char *TREND; /*^to end of above;init = TRTBL*/
int DLINK; /*^ head of diversion list*/
int *RLINK; /*^ head of register variable list*/
int *SLINK,*MLINK; /* points to head of linked string, macro lists */
/*following added for buffered and formatted output: */
char OUTBUF2[LSZ]; /*for line to be output in fancy fmt*/
int BPOS,CP,PP; /*buffer,column,printer positions*/
char XBUF[LSZ]; /*strikout buffer*/
int XF,XCOL; /* " flag and column */
char UBUF[LSZ]; /*underline buffer*/
int UF,UCOL; /* " flag and column */
int FIRST; /*flag for first pass*/
char DBUF[LSZ]; /*double strike buffer*/
int DPOS;
int OCNT;
int MCNT;
int BLKCNT;
int NEWXF,NEWUF,NEWMCNT; /* 3rd Mar,85 ; Conrad Kwok */
char LASTCH; /* 5th Mar,85 ; Conrad Kwok */
#define REVSCROLL FALSE
#define CANBS FALSE
#define BACKSIZE LSZ
char BACKBUF[BACKSIZE];
int BINP; /*position in above;init to 0*/
#define BELL '\007'
char KEYBD; /*boolean & prompt for keyboard input*/
char KLINE[MAXLINE]; /*keyboard line input buffer*/
char *KPTR; /*pointer for above*/
struct divfd
{char *nm; /*name*/
int cs; /*character count*/
int ls; /*line count*/
FILE *bf; /*to iobuf if open, FALSE otherwise*/
};
#define FMAX 4 /* # of additional files open*/
int FPTR;
FILE *FSTACK[FMAX];
int TFLAG;/*added for start(), complete()*/
int XF2,UF2,MCNT2;